package com.starhub.engine.ai.dto;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * AI函数DTO对象
 * 用于接收前端请求参数
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class AiFunctionDTO {

    /**
     * 主键ID，新增时为空
     */
    private Long id;

    /**
     * 函数名称
     */
//    @NotBlank(message = "函数名称不能为空")
    private String name;

    /**
     * 函数描述
     */
//    @NotBlank(message = "函数描述不能为空")
    private String description;

    /**
     * 函数类型
     */
//    @NotBlank(message = "函数类型不能为空")
    private String type;

    /**
     * 函数参数JSON配置
     */
//    @NotBlank(message = "函数参数配置不能为空")
    private String parameters;

    /**
     * 函数执行前是否需要确认
     */
//    @NotNull(message = "请指定是否需要确认")
    private Boolean needConfirm;

    /**
     * 是否触发前端动作
     */
//    @NotNull(message = "请指定是否触发前端动作")
    private Boolean triggerFrontend;

    /**
     * 前端动作类型
     */
    private String frontendAction;

    /**
     * 函数执行后是否将结果再次给到大模型
     */
//    @NotNull(message = "请指定是否将结果再次给到大模型")
    private Boolean regenerateResult;

    /**
     * 函数实现类
     */
//    @NotBlank(message = "函数实现类不能为空")
    private String implementationClass;

    /**
     * 函数实现方法
     */
//    @NotBlank(message = "函数实现方法不能为空")
    private String implementationMethod;

    /**
     * 状态：0-禁用，1-启用
     */
    private String status;

    /**
     * 函数定义（JSON格式）
     */
    private String definition;

}